// 上面这个代码处理过度动画（默认加上不用管）
document.addEventListener("DOMContentLoaded", () => {
  setTimeout(() => {
    document.body.classList.add("sidenav-pinned")
    document.body.classList.add("ready")
  }, 200)
})

// 每个页面都会导入该js 统一的设置写这里即可

const myToast = new bootstrap.Toast(document.querySelector("#myToast"), {
  delay: 2000,
})
// 封装轻提示框 函数
function tip(msg) {
  // 修改提示内容
  document.querySelector(`.toast-body`).innerHTML = msg
  // 显示轻提示框
  myToast.show()
}

// 设置基地址
axios.defaults.baseURL = `http://ajax-api.itheima.net`

// 渲染用户名
const username = localStorage.getItem("username")
const span = document.querySelector(`#navbar-main .font-weight-bold`)
span && (span.innerHTML = username)

// 退出功能
const logout = document.querySelector(`#logout`)
logout &&
  logout.addEventListener("click", function (e) {
    // 删除用户信息
    localStorage.removeItem("username")
    localStorage.removeItem("token")
    // 跳转到登录
    location.href = `./login.html`
  })

// 添加请求拦截器
axios.interceptors.request.use(
  function (config) {
    // 这是一个axios的配置对象
    // console.log(config)
    // 在请求之前同意注入token
    config.headers.authorization = localStorage.getItem(`token`)
    // 在发送请求之前做些什么
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
axios.interceptors.response.use(
  function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么

    // 数据剥离
    return response.data
  },
  function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么

    // 处理错误信息
    // 但凡token出错都会返回401状态码
    if(error.response.status === 401){
      // 清空本地信息，并跳转到登录页面
      localStorage.removeItem(`token`)
      localStorage.removeItem(`username`)
      location.href=`./login.html`
    }
    return Promise.reject(error)
  }
)
